#include "fpga_interface.h"

/**
 * @brief 设置FPGA自生成信号的载荷参数
 *
 * @param modu_style 靶标信号类型 0:BPSK 1:QPSK 2:DBPSK 3:DQPSK 4:8PSK
 * @param code_length 数据帧长度 1:1ms 2:10ms 3:100ms 4:1s 5:10s
 * @param delay_time 延迟时间 单位 200ns
 * @param center_frequency 中心频率
 * 中频频率值为16bit，设置中心频率时，最低位分辨率为3.125KHz（如果此分辨率不能满足需求，则需要调整该位数），中心频率值可以覆盖102.4MHz
 * @param band_sel 带宽选择 1：5K 2：25K 3：60K 4：200K 5：1.28M 6：6.4M
 */
void set_self_generated_signal(uint8_t modu_style, uint8_t code_length,
                               uint32_t delay_time, uint16_t center_frequency,
                               uint16_t band_sel) {
    spi_write_fpga(1, 0x34, modu_style);
    spi_write_fpga(1, 0x35, delay_time);
    spi_write_fpga(1, 0x36, code_length);

    spi_write_fpga(1, 0x0c, band_sel);

    // 靶标信号类型
    // 1: FPGA自生成的测试信号
    spi_write_fpga(1, 0x06, 1);
}

/**
 * @brief 启动自动自产生信号发射
 *
 */
void enable_self_generated_signal() {
    // 靶标信号类型
    // 1: FPGA自生成的测试信号
    spi_write_fpga(1, 0x06, 1);

    spi_write_fpga(1, 0x10, 0);
    spi_write_fpga(1, 0x10, 1);
    spi_write_fpga(1, 0x10, 0);
}

/**
 * @brief 启动循环播放信号发射
 *
 */
void enable_cyclic_play() {
    // 靶标信号类型
    // 0: TX方向循环播放DDR里的数据
    spi_write_fpga(1, 0x06, 0);

    spi_write_fpga(1, 0x10, 0);
    spi_write_fpga(1, 0x10, 1);
    spi_write_fpga(1, 0x10, 0);
}

void write_signal_table() {}
